package com.example.kcp.enums;

import lombok.Getter;

/**
 * @author "陈凯航"
 * @date 2024/9/24
 * @mail "mengxingcn@aliyun.com"
 */
@Getter
public enum CommandCode {
    WRITE_SINGLE_VARIABLE_VALUE((byte) 0x00),
    READ_SINGLE_VARIABLE_VALUE((byte) 0x01),
    READ_MULTIPLE_VARIABLE_VALUES((byte) 0x02),
    WRITE_MULTIPLE_VARIABLE_VALUES((byte) 0x03),
    ALLOTS_MIXED_NAVIGATION_TASK((byte) 0xAE),
    QUERY_AGV_STATUS((byte) 0xAF),
    QUERY_CARGO_STATUS((byte) 0xB0),
    ISSUE_SUBSCRIPTION_SIGNAL((byte) 0xB1),
    IMMEDIATE_ACTION_COMMAND((byte) 0xB2),
    SET_CAPABILITY_SET_COMMAND((byte) 0xB7),
    NAVIGATION_CONTROL((byte) 0x16),
    QUERY_ROBOT_RUNNING_STATE((byte) 0x17),
    QUERY_ROBOT_NAVIGATION_STATE((byte) 0x1D),
    CONFIRM_INITIAL_POSITION((byte) 0x1F),
    MAGNETIC_NAVIGATION_CONTROL_SERVICE((byte) 0xE0),
    MAGNETIC_NAVIGATION_TASK_INFO_ISSUE((byte) 0xE1),
    MAGNETIC_NAVIGATION_TASK_CONTROL_ISSUE((byte) 0xE2),
    MAGNETIC_NAVIGATION_RUNNING_STATE_QUERY((byte) 0xE3),
    MAGNETIC_NAVIGATION_RELOCALIZATION((byte) 0xE4),
    QUERY_TRAFFIC_MANAGEMENT_RESOURCE_REQUEST((byte) 0xE5),
    NOTIFY_TRAFFIC_MANAGEMENT_RESOURCE_OCCUPATION((byte) 0xE6);

    private final byte value;

    CommandCode(byte value) {
        this.value = value;
    }

    public static CommandCode ofByte(byte b) {
        for (CommandCode value : CommandCode.values()) {
            if (value.getValue() == b) return value;
        }
        throw new IllegalArgumentException("invalid Parameter Exception byte: "+b);
    }

}

